/*
	Analizador Lexico
	Compilador C --
	Integrantes: Martinelli, Fernán Gabriel
		     Riberi, Franco Gaspar
		     Varea, Agustín	
*/

%{
#include <stdio.h>
#include "y.tab.h"  /* Es un generador automatico para Bison */
int num_lineas = 1;
int num_caracteres = 0;
%}

%option noyywrap 

/* Definiciones regulares */
Digito [0-9]
Letra [a-zA-Z]
Identifier {Letra}({Letra}|{Digito})*
IntDenotation {Digito}+
FloatDenotation ({Digito})*"."({Digito})*(("E"|"e")("+"|"-")({Digito})+)?
comentarios "/*"(.)*"*/"   
/* Otra definición más elegante para comentarios es usar (.)* para decir todos los caracteres, o ({letra})*({Digito})* */

/* EXPRESIONES LOGICAS,MATEMATICAS Y RELACIONALES */
%%
"while"			{ return WHILE; }
"break"			{ return BREAK; }
"continue"		{ return CONTINUE; }
"if"			{ return IF; }
"else"			{ return ELSE; }
"return"		{ return RETURN; }	
"int"			{ return INT; }
"float"			{ return FLOAT; }

"==" 			{return (IGUALIGUAL);}
"="			{return ('=');}
":"			{return (':');}
"?"			{return ('?');}
"&&"			{return (AMPERAMPER);}
"||"			{return (BARRABARRA);}
"<"			{return ('<');}
">"			{return ('>');}
"+"			{return ('+');}
"-"			{return ('-');}
"*"			{return ('*');}
"/"			{return ('/');}
"%"			{return ('%');}
"!"			{return ('!');}
"("			{return ('(');}
")"			{return (')');}
","			{return (',');}
"{"			{return ('{');}
"}"			{return ('}');}
";"			{return (';');}
"\n"			{num_lineas=num_lineas+1;}
"\t"
" "
{Identifier}		{return (IDENTIFIER);} 
{FloatDenotation}	{return (FLOATDENOTATION);}
{IntDenotation}		{return (INTDENOTATION);}
{comentarios}
.			{return (ERROR);}
%%
